php مرکز کد های سایت

ساخت وبلاگ
سلام و خسته نباشید
ابتدا عذر خواهی میکنم در مورد سوالات زیادی که این چن روزا میپرسم.
تا به حال به سایت های معروف ایران رفتین :
Digikala.com
aparat.com
Blogfa.com
و...
همونطور که میدونیم این سایت ها ابتدا ی سایت معمولی بودن ولی الآن دیگه واسه خودشون ی برند شدن.
الآن هرجا که بری دی جی کالا رو میشناسن و میدونن زمینه ی کاریش چیه.
به هرکس میگی فیلم ، آپارارت رو معرفی میکنه و ....

حالا سوالاتی که من دارم:
چی شد که اینا واسه خودشون برند شدن و معروف شدن؟
از چ روش هایی برای این کارها استفاده کردن؟
از چ نوع تبلیغاتی برای این کار استفاده کردن؟
آیا ایمیل های تبلیغاتی فرستادن ؟

من میخوام اطلاعاتی در مورد برند سازی بدست بیارم و راه های تبلیغ ی سایت رو بدونم.
چطوری بازدید ی سایت رو بالا ببرم؟

الآن به این آدرس برید.
http://www.stonetown.ir/
این ی شهر مجازی تو صنعت سنگ هستش.
من میخوام این سایت رو به همه ی فعالان صنعت سنگ معرفی کنم.
از چ روش هایی برای این کار استفاده کنم؟
منتظر پیشنهاداتتون هستم
ممنون

php مرکز کد های سایت...
ما را در سایت php مرکز کد های سایت دنبال می کنید

برچسب : نویسنده : استخدام کار phpco بازدید : 152 تاريخ : شنبه 29 اسفند 1394 ساعت: 14:19

میتونید بصورت json یا serialize درش بیارید و در یک فیلد کاراکتری ذخیره کنید و بعد از بازیابی آنرا دوباره به حالت آرایه در بیاورید

البته اگر نیازی دارید کوئری روی آرایه ها انجام بدید بهتره کلا یک جدول دیگه بهش اختصاص بدید و بصورت رابطه یک به چند با جدول مادر انجامش بدید

البته در دیتابیس هایی postgresql قابلیت ذخیره آرایه به شیوه هایی موجوده Smile
ولی در mysql موجود نیست

php مرکز کد های سایت...
ما را در سایت php مرکز کد های سایت دنبال می کنید

برچسب : نویسنده : استخدام کار phpco بازدید : 163 تاريخ : شنبه 29 اسفند 1394 ساعت: 14:19

همیشه حس میکردم یه چیزی یه جای از برنامم نامیزونه... چون پرفومنسش نسبت به برنامه های "خارجی" بزرگتر پایین بود
سورس برنامه های بقیه(ایرانیا بیشتر) رو هم که نگاه میکردم میدیدم که خیلی از اونا هم این مشکلو دارن...

بعد از کلی تحقیق بلخره یه مقاله از پروفسور Andrew T. Campbell پیدا کردم که توضح کاملی راجب Activity Lifecycle (باز و بسته شدن برنامه های اندروید) داده بود! اونم تو یک صفحه دره پیت و ساده Heart

شیوه درست صدا زدن Superclass ها در Activity:

کد:

// Called after onCreate has finished, use to restore UI state
@Override
public void onRestoreInstanceState(Bundle savedInstanceState)
{
    super.onRestoreInstanceState(savedInstanceState); // Always call the superclass method at FIRST.

    // Restore UI state from the savedInstanceState.
    // This bundle has also been passed to onCreate.
    // Will only be called if the Activity has been
    // killed by the system since it was last visible.
}

// Called before subsequent visible lifetimes for an activity process.
@Override
public void onRestart()
{
    super.onRestart(); // Always call the superclass method at FIRST.

    // Load changes knowing that the Activity has already
    // been visible within this process.
}

// Called at the start of the visible lifetime.
@Override
public void onStart()
{
    super.onStart(); // Always call the superclass method at FIRST.

    // Apply any required UI change now that the Activity is visible.
}

// Called at the start of the active lifetime.
@Override
public void onResume()
{
    // Resume any paused UI updates, threads, or processes required
    // by the Activity but suspended when it was inactive.

    super.onResume(); // Always call the superclass method at LAST.
}

// Called to save UI state changes at the end of the active lifecycle.
@Override
public void onSaveInstanceState(Bundle savedInstanceState)
{
    // Save UI state changes to the savedInstanceState.
    // This bundle will be passed to onCreate and
    // onRestoreInstanceState if the process is
    // killed and restarted by the run time.

    super.onSaveInstanceState(savedInstanceState); // Always call the superclass method at LAST.
}

// Called at the end of the active lifetime.
@Override
public void onPause()
{
    // Suspend UI updates, threads, or CPU intensive processes
    // that don't need to be updated when the Activity isn't
    // the active foreground Activity.

    super.onPause(); // Always call the superclass method at LAST.
}

// Called at the end of the visible lifetime.
@Override
public void onStop()
{
    super.onStop(); // Always call the superclass method at FIRST.

    // Suspend remaining UI updates, threads, or processing
    // that aren't required when the Activity isn't visible.
    // Persist all edits or state changes
    // as after this call the process is likely to be killed.
}

// Sometimes called at the end of the full lifetime.
@Override
public void onDestroy()
{
    // Clean up any resources including ending threads,
    // closing database connections etc.

    super.onDestroy(); // Always call the superclass method at LAST.
}

خلاصه مطلب: در متد های onRestoreInstanceState، OnStop, OnRestart, onStart، ابتدا باید Superclass صدا زده بشه و بعد کدهای شما قرار بگیره. اما در متدهای OnDestroy, OnPause, onSaveInstanceState, OnResume ابتدا باید کدهای شما قرار بگیره و بعد متد Superclass صدا زده بشه.

عدم رعایت این اولویت ها باعث کندی، crash کردن، memory leak، ناهماهنگی در UI، باگهای DataSaving و امثالش میشه... پس حتماً رعایت کنید.
(که کندی و ناهماهنگی UI ش شامل حال من میشد)

منبع: پروفسور Andrew T. Campbell
http://cs.dartmouth.edu/~campbell/cs65/l...ure05.html
اطلاعات بیشتر:
http://grepcode.com/file/repository.grep...ivity.java

آدمی در عالم خاکی نمی آید به دست / عالمی دیگر بباید ساخت وز نو آدمی

php مرکز کد های سایت...
ما را در سایت php مرکز کد های سایت دنبال می کنید

برچسب : نویسنده : استخدام کار phpco بازدید : 159 تاريخ : شنبه 29 اسفند 1394 ساعت: 14:19

میتونید بصورت json یا serialize درش بیارید و در یک فیلد کاراکتری ذخیره کنید و بعد از بازیابی آنرا دوباره به حالت آرایه در بیاورید

البته اگر نیازی دارید کوئری روی آرایه ها انجام بدید بهتره کلا یک جدول دیگه بهش اختصاص بدید و بصورت رابطه یک به چند با جدول مادر انجامش بدید

البته در دیتابیس هایی postgresql قابلیت ذخیره آرایه به شیوه هایی موجوده Smile
ولی در mysql موجود نیست

php مرکز کد های سایت...
ما را در سایت php مرکز کد های سایت دنبال می کنید

برچسب : نویسنده : استخدام کار phpco بازدید : 179 تاريخ : شنبه 29 اسفند 1394 ساعت: 9:41

همیشه حس میکردم یه چیزی یه جای از برنامم نامیزونه... چون پرفومنسش نسبت به برنامه های "خارجی" بزرگتر پایین بود
سورس برنامه های بقیه(ایرانیا بیشتر) رو هم که نگاه میکردم میدیدم که خیلی از اونا هم این مشکلو دارن...

بعد از کلی تحقیق بلخره یه مقاله از پروفسور Andrew T. Campbell پیدا کردم که توضح کاملی راجب Activity Lifecycle (باز و بسته شدن برنامه های اندروید) داده بود! اونم تو یک صفحه دره پیت و ساده Heart

شیوه درست صدا زدن Superclass ها در Activity:

کد:

// Called after onCreate has finished, use to restore UI state
@Override
public void onRestoreInstanceState(Bundle savedInstanceState)
{
    super.onRestoreInstanceState(savedInstanceState); // Always call the superclass method at FIRST.

    // Restore UI state from the savedInstanceState.
    // This bundle has also been passed to onCreate.
    // Will only be called if the Activity has been
    // killed by the system since it was last visible.
}

// Called before subsequent visible lifetimes for an activity process.
@Override
public void onRestart()
{
    super.onRestart(); // Always call the superclass method at FIRST.

    // Load changes knowing that the Activity has already
    // been visible within this process.
}

// Called at the start of the visible lifetime.
@Override
public void onStart()
{
    super.onStart(); // Always call the superclass method at FIRST.

    // Apply any required UI change now that the Activity is visible.
}

// Called at the start of the active lifetime.
@Override
public void onResume()
{
    // Resume any paused UI updates, threads, or processes required
    // by the Activity but suspended when it was inactive.

    super.onResume(); // Always call the superclass method at LAST.
}

// Called to save UI state changes at the end of the active lifecycle.
@Override
public void onSaveInstanceState(Bundle savedInstanceState)
{
    // Save UI state changes to the savedInstanceState.
    // This bundle will be passed to onCreate and
    // onRestoreInstanceState if the process is
    // killed and restarted by the run time.

    super.onSaveInstanceState(savedInstanceState); // Always call the superclass method at LAST.
}

// Called at the end of the active lifetime.
@Override
public void onPause()
{
    // Suspend UI updates, threads, or CPU intensive processes
    // that don't need to be updated when the Activity isn't
    // the active foreground Activity.

    super.onPause(); // Always call the superclass method at LAST.
}

// Called at the end of the visible lifetime.
@Override
public void onStop()
{
    super.onStop(); // Always call the superclass method at FIRST.

    // Suspend remaining UI updates, threads, or processing
    // that aren't required when the Activity isn't visible.
    // Persist all edits or state changes
    // as after this call the process is likely to be killed.
}

// Sometimes called at the end of the full lifetime.
@Override
public void onDestroy()
{
    // Clean up any resources including ending threads,
    // closing database connections etc.

    super.onDestroy(); // Always call the superclass method at LAST.
}

خلاصه مطلب: در متد های onRestoreInstanceState، OnStop, OnRestart, onStart، ابتدا باید Superclass صدا زده بشه و بعد کدهای شما قرار بگیره. اما در متدهای OnDestroy, OnPause, onSaveInstanceState, OnResume ابتدا باید کدهای شما قرار بگیره و بعد متد Superclass صدا زده بشه.

عدم رعایت این اولویت ها باعث کندی، crash کردن، memory leak، ناهماهنگی در UI، باگهای DataSaving و امثالش میشه... پس حتماً رعایت کنید.
(که کندی و ناهماهنگی UI ش شامل حال من میشد)

منبع: پروفسور Andrew T. Campbell
http://cs.dartmouth.edu/~campbell/cs65/l...ure05.html
اطلاعات بیشتر:
http://grepcode.com/file/repository.grep...ivity.java

آدمی در عالم خاکی نمی آید به دست / عالمی دیگر بباید ساخت وز نو آدمی

php مرکز کد های سایت...
ما را در سایت php مرکز کد های سایت دنبال می کنید

برچسب : نویسنده : استخدام کار phpco بازدید : 127 تاريخ : شنبه 29 اسفند 1394 ساعت: 9:41

عرض ادب و احترام،
بنده میخوام قالب این سایت رو دریافت کنم، ولی نمیتونم، خیلی قشنگ برنامه نویسی شده:
http://mohsen-salehi.ir/
نرم افزار یا راهکاری خاصی دارید که بهم معرفی کنید?
سپاس فراوان

php مرکز کد های سایت...
ما را در سایت php مرکز کد های سایت دنبال می کنید

برچسب : نویسنده : استخدام کار phpco بازدید : 162 تاريخ : شنبه 29 اسفند 1394 ساعت: 9:41

سلام و خسته نباشید
ابتدا عذر خواهی میکنم در مورد سوالات زیادی که این چن روزا میپرسم.
تا به حال به سایت های معروف ایران رفتین :
Digikala.com
aparat.com
Blogfa.com
و...
همونطور که میدونیم این سایت ها ابتدا ی سایت معمولی بودن ولی الآن دیگه واسه خودشون ی برند شدن.
الآن هرجا که بری دی جی کالا رو میشناسن و میدونن زمینه ی کاریش چیه.
به هرکس میگی فیلم ، آپارارت رو معرفی میکنه و ....

حالا سوالاتی که من دارم:
چی شد که اینا واسه خودشون برند شدن و معروف شدن؟
از چ روش هایی برای این کارها استفاده کردن؟
از چ نوع تبلیغاتی برای این کار استفاده کردن؟
آیا ایمیل های تبلیغاتی فرستادن ؟

من میخوام اطلاعاتی در مورد برند سازی بدست بیارم و راه های تبلیغ ی سایت رو بدونم.
چطوری بازدید ی سایت رو بالا ببرم؟

الآن به این آدرس برید.
http://www.stonetown.ir/
این ی شهر مجازی تو صنعت سنگ هستش.
من میخوام این سایت رو به همه ی فعالان صنعت سنگ معرفی کنم.
از چ روش هایی برای این کار استفاده کنم؟
منتظر پیشنهاداتتون هستم
ممنون

php مرکز کد های سایت...
ما را در سایت php مرکز کد های سایت دنبال می کنید

برچسب : نویسنده : استخدام کار phpco بازدید : 155 تاريخ : شنبه 29 اسفند 1394 ساعت: 1:13

سلام

بالاخره PhpStorm در آخرین ورژنش که دیروز منتشر شد به صورت کاملا صحیح از زبان فارسی پشتیبانی می کنه و اون مشکل بهم ریختگی حروف هنگام ویرایش رو نداره .
فکر می کنم بهترین تغییری بود که می شد ایجاد کنن .

php مرکز کد های سایت...
ما را در سایت php مرکز کد های سایت دنبال می کنید

برچسب : نویسنده : استخدام کار phpco بازدید : 163 تاريخ : جمعه 28 اسفند 1394 ساعت: 21:32

kalilix آفلاین
عضو جدید
**

ارسال‌ها: 1
تاریخ عضویت: امروز
اعتبار: 0

تشکرها : 0
( 0 تشکر در 0 ارسال )

ارسال: #1
دو زبانه کردن با توجه بهIP در PHP

سلام
من میخوام یه سایت شخصی بسازم که دو زبانه باشه
ولی نمیدونم چجوری اطلاعات طرف بازدیدکننده چی هست که
بگم کدوم زبان باشه .
میخوام اگر کاربر از ایران وارد سایت شد زبان فارسی باشه
اگر جز ایران بود انگلیسی .

ممنون میشم اگر کسی بلد بود بگه .

امروز ۰۶:۲۱ عصر

php مرکز کد های سایت...
ما را در سایت php مرکز کد های سایت دنبال می کنید

برچسب : نویسنده : استخدام کار phpco بازدید : 164 تاريخ : جمعه 28 اسفند 1394 ساعت: 21:32

همه رمزنگاریش میکنن و بعد وارد دیتابیس می کنن...

الگوریتمش هم برای سایتهای معمولی زیاد مهم نیست، چون اولاً یکطرفند(به زبان ساده Decrypt نمیشن)، دوماً برای crack کردنشون روزها و ماهها وقت نیازه
می تونی از روش های آماده مثل SHA512, MD6, Tiger, Haval, Whirlpool و امثالش استفاده کنی + salt

آدمی در عالم خاکی نمی آید به دست / عالمی دیگر بباید ساخت وز نو آدمی

php مرکز کد های سایت...
ما را در سایت php مرکز کد های سایت دنبال می کنید

برچسب : نویسنده : استخدام کار phpco بازدید : 211 تاريخ : جمعه 28 اسفند 1394 ساعت: 8:27

Reza آفلاین
رضا شیخله
*****

ارسال‌ها: 2,700
تاریخ عضویت: ۱۳۹۰ آبان ۱۶
اعتبار: 95

تشکرها : 2485
( 2164 تشکر در 1400 ارسال )

ارسال: #2
RE: رتبه بندی

کد:

select p_id, (sum(nums) / count(nums)) as _av from nums
group by p_id
order by _av desc

__________________________________________________________________________
-- - RezaWorkShop.ir - blog.RezaOnline.net

php مرکز کد های سایت...
ما را در سایت php مرکز کد های سایت دنبال می کنید

برچسب : نویسنده : استخدام کار phpco بازدید : 159 تاريخ : جمعه 28 اسفند 1394 ساعت: 8:27

سلام و خسته نباشید به دوستان عزیز
به این کد من ی نیگا بندازین

کد PHP:

ini_set('session.save_path','path');session_start(  );session_regenerate_id();$_SESSION['hamid']='sad';
echo 
$_SESSION['hamid']; 


این کد های من این ارور رو میده.

Waing: Unknown: open(pathsess_e3ihjmmkso1p05tu65vfuvcev5, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

Waing: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (path) in Unknown on line 0

من وقتی از تابع session_regenerate_id(); استفاده کردنی این ارور رو دارم.
از این تابع هم برای امنیت بیشتر استفاده میکنم.
آیا ب نظرتون نیاز به استفاده از تابع session_regenerate_id(); هستش؟
چیکار کنم که این ارور برطرف بشه
ممنون

php مرکز کد های سایت...
ما را در سایت php مرکز کد های سایت دنبال می کنید

برچسب : نویسنده : استخدام کار phpco بازدید : 182 تاريخ : جمعه 28 اسفند 1394 ساعت: 8:27

سلام و خسته نباشید به دوستان عزیز
به این آدرس ی سری بزنید.
http://www.zncms.ir
الآن دو ماهی میشه که دارم روی این جامعه مجازی کار میکنم بالاخره تموم شد.این جامعه مجازی در مورد صنعت سنگ هستش.
میخوام از تجربیات همه ی شما دوستان تو امنیت این پروژه کمک بگیرم.
ابتدا من بگم که چ کارایی رو برای امنیت این پروژه انجام دادم.

1- برای جلوگیری از حملات sql_injection از pdo استفاده کردم و تمام کوئری هام رو با استفاده از prepare اجرا کردم.
به نظرم برای جلوگیری از حملات sqlinjection همین قدر کافیه.
آیا راه حل دیگری به ذهنتان میرسد.

2-برای جلوگیری از حملات xss و امسال اینها از توابع زیر استفاده کردم
htmlentitis
striptags
htmlspeacialcharts
و برای امنیت بیشتر از کتاب خانه ی htmlpruf استفاده کردم.

3- برای جلوگیری از آپلود انواع شل به جای عکس از توابع gd استفاده کردم.
نام تصاویر به طور رندوم عوض میکنم و کاربر به هیچ عنوان نمیتونه بعد از آپلود تصویر نام تصویر رو حدث بزنه.
جلوی لیست دایرکتوری رو گرفتم و کاربر نمیتونه دایرکتوری هامو لیست کنه.

4-از ckeditor استفاده کردم ولی نمیشه باهاش آپلود کرد. ی خطایی میده که دقیق نمیدونم چیه؟
برای ckeditor از htmlpruf استفاده کردم.

5- برای ثبت نام و کارهایی از این قبیل از کپتا استفاده کردم.
کپتا رو خودم ساختم : ب نظرتون چطوریه؟ آیا حدث زدنش برای ربات ها آسونه یا نه؟

6- کنترل خطارو تو کل برنامه صفر کردم
7- url رو به طور کامل کنترل کردم.

بخش ثبت نام و ورود چ مشکلاتی داره؟
به نظرتون دیگه باید کجاهای پروژه رو چک کنم؟
آیا چیزی از یادم رفته که چک نکرده باشم؟
تو چنین پروژه هایی باید تمرکزم رو کجا بزارم؟
چ پیشنهاداتی برای امنیت بیشتر و بهتر دارین؟

ممنون از راهنمایی هاتون

php مرکز کد های سایت...
ما را در سایت php مرکز کد های سایت دنبال می کنید

برچسب : نویسنده : استخدام کار phpco بازدید : 163 تاريخ : جمعه 28 اسفند 1394 ساعت: 0:25

سلام اساتید محترم

دوستان عزیز بنده یک اسکریپتک آپلود سنتر نوشتم و می خواهم همه فایل های بجز تصاویر به صورت غیر مستقیم ارائه شود یعنی کاربر وقتی صفحه دانلود رو دید بتونه فایل رو دانود کنه.

روش های مبتدی و پایه رو بلدم ؛ می خوام یک روش ایمن رو قوی رو اسکریپتم پیدا کنم. مثل پیکو فایل !
روشی می خواهم که حتی اگه کاربر به مسیر اصلی و پوشه فایل ها هم پی برد و تونست لینک مستقیم فایل رو وارد کرد ابتدا به صفحه دانلود ریداریکت بشه و سپس فایل رو دانلود کنه.

منتظر راه کارهای دوستان هستم.

+ اینترنت رو گشتم همش راه کارهای مبتدی بودن که با کمی وقت صرف کردن میشه به لینک مستقیم رسید!

php مرکز کد های سایت...
ما را در سایت php مرکز کد های سایت دنبال می کنید

برچسب : نویسنده : استخدام کار phpco بازدید : 180 تاريخ : پنجشنبه 27 اسفند 1394 ساعت: 16:49

با سلام دوستان توی اینجا نوشته که حفاظت از سیستم فایل، این کد برای کجا استفاده میشه و عملکردش چگونه است؟
توی توضیحات گفته که نا امنه میشه بگید به درد کجای سایت میخوره و برای امن کردن باید چکار کنیم؟Angel

php مرکز کد های سایت...
ما را در سایت php مرکز کد های سایت دنبال می کنید

برچسب : نویسنده : استخدام کار phpco بازدید : 173 تاريخ : پنجشنبه 27 اسفند 1394 ساعت: 12:44

پرش به انجمن:

php مرکز کد های سایت...
ما را در سایت php مرکز کد های سایت دنبال می کنید

برچسب : نویسنده : استخدام کار phpco بازدید : 171 تاريخ : پنجشنبه 27 اسفند 1394 ساعت: 4:36

سلام،
بعد از حدود 5 سال درد و رنجی که بابت این موضوع کشیدم! بالاخره دوستان راه حلی براش پیدا کردن که بد نیست انتشار پیدا کنه...

1- در محل نصب نرم افزار فایل idea.properties رو پیدا کنید
2- با یک ادیتور مثل notepad بازش کنید و خط زیرُ به انتهای فایل اضافه کنید:

کد:

editor.new.rendering=true

3- یک بار phpstrom رو ببندید و دوباره باز کنید.

نکته: این امکان روی نسخه 9 به بالای نرم افزار کار میکنه.

آسان گیر بر خود کارها کز روی طبع، سخت می گیرد جهان بر مردمان سخت کوش

php مرکز کد های سایت...
ما را در سایت php مرکز کد های سایت دنبال می کنید

برچسب : نویسنده : استخدام کار phpco بازدید : 174 تاريخ : پنجشنبه 27 اسفند 1394 ساعت: 2:44

<?php
  require_once("photo_gallery/includes/phpMailer/class.phpmailer.php");
  require_once("photo_gallery/includes/phpMailer/class.smtp.php");
  require_once("photo_gallery/includes/phpMailer/language/phpmailer.lang-en.php");

  $to_name = "name"; // masalan: user
  $to = "email address"; //va emaile shoma
  $subject = "Mail Test at " . strftime("%T", time());
  $message = "This is a test.";
  $message = wordwrap($message, 70);
  $from_name = "name"; //masalan admin
  $from = ""; // va email man

  // PHPMailer's Object-oriented approach
  $mail = new PHPMailer();

  $mail->IsSMTP();
  $mail->SMTPSecure = 'tls'; //in ro ham emtehan kardam vali bi fayede bood ---->  (SSL) va port: 465  -or-  (TLS) va port: 587
  $mail->Host = "smtp.gmail.com"; //   $mail->Host = "ssl://smtp.gmail.com:465";   or   "smtp.gmail.com:465"
  $mail->Port = 587;  // 465  -  587 - 25
  $mail->SMTPAuth = true;
  $mail->Useame = "useame"; //email: [email protected] // masalan email man
  $mail->Password = "password"; // password email

  
  $mail->FromName = $from_name;
  $mail->From = $from;
  $mail->AddAddress($to, $to_name);
  $mail->Subject = $subject;
  $mail->Body = $message;

  $result = $mail->Send();
  echo $result ? 'Sent' : 'Error' . $mail->ErrorInfo;
?>

php مرکز کد های سایت...
ما را در سایت php مرکز کد های سایت دنبال می کنید

برچسب : نویسنده : استخدام کار phpco بازدید : 157 تاريخ : پنجشنبه 27 اسفند 1394 ساعت: 2:44

پارتیشن بندی اساسا در دیتاهای بزرگ سبب افزایش سرعت (قابل ملموس) دستورات SELECT میشود.
و همانطور که از اسمش پیداست براین اساس هست که رکوردهای یک جدول را به چندین پارت کوچکتر تقسیم میکند و براساس نوع تقسیم بندی فقط در یک یا چند پارت کوچکتر عملیات جستجو را انجام میدهد که این نتیجه خوبی در دیتاهای بارکورد بالا خواهد داشت ، دیتابیس هایی چون MySQL و MSSQL چنین قابلیتی رو دارا هستند که بسادگی پارتیشن بندی در آنها ایجاد کرد اما برای PostgreSQL کمی داستان متفاوت است. در حقیقت پارتیشن بندی در PostgreSQL با قابلیت وراثت جداول از یکدیگر قابل پیاده سازی میباشد به این ترتیب که یک جدول مادر ساخته میشود و جدولهای فرزند متعدد (که بعنوان پارت های جدا هستند) از جدول مادر ارث بری میکنند و وظیفه ذخیره داده ها را برعهده دارند .

فرض کنید ما تیبلی برای ذخیره سازی مطالب وبلاگ در نظر میگیرم

کد:

CREATE TABLE "post" (
"id" serial NOT NULL,
"title" character varying(255) NOT NULL,
"user_id" integer NOT NULL,
"story" text NOT NULL,
"status" smallint NOT NULL DEFAULT '1'
);


فرض کنیم قرار است نهایتا 3000 رکورد در این تیبل ذخیره شود ، خب ما میخواهیم این تیبل را به سه پارت 1000 رکوردی تقسیم کنیم براساس کلید اصلی !

ابتدا سه جدول میسازیم که از جدول مادر ارث بری کنند و در هر جدول حوزه مجاز id را با دستور check مشخص میکنیم .

کد:

CREATE TABLE POST1000
(
PRIMARY KEY (id) ,
CHECK(id>0 AND id<=1000)
) INHERITS (post);

CREATE TABLE POST2000
(
PRIMARY KEY (id) ,
CHECK(id>1000 AND id<=2000)
) INHERITS (post);

CREATE TABLE POST3000
(
PRIMARY KEY (id) ,
CHECK(id>2000 AND id<=3000)
) INHERITS (post);

سپس در جدولهای فرزند برای کلید id ، ایندکس تعریف میکنیم

کد:

CREATE INDEX "post1000_id" ON "post1000" ("id");
CREATE INDEX "post2000_id" ON "post2000" ("id");
CREATE INDEX "post3000_id" ON "post3000" ("id");


حالا باید یک تریگر بنویسیم که در زمان insert کردن به جدول post ، مقادیر را به جدول های فرزند منتقل کند .

کد:

CREATE OR REPLACE FUNCTION post_trigger()
RETURNS TRIGGER AS $$
BEGIN
IF (NEW.id>0 and NEW.id<=1000) THEN
INSERT INTO post1000 VALUES (NEW.*);
ELSIF (NEW.id>1000 and NEW.id<=2000) THEN
INSERT INTO post2000 VALUES (NEW.*);
ELSIF (NEW.id>2000 and NEW.id<=3000) THEN
INSERT INTO post3000 VALUES (NEW.*);
ELSE
RAISE EXCEPTION 'id is not valid for insert in partition table!';
END IF;
RETURN NULL;
END;
$$
LANGUAGE plpgsql;

کد:

CREATE TRIGGER insert_post_trigger
BEFORE INSERT ON post
FOR EACH ROW EXECUTE PROCEDURE post_trigger();

حالا تعدادی رکورد مختلف اضافه میکنیم .

کد:

INSERT INTO "post" ("id", "title", "user_id", "story", "status")
VALUES
('1', 'عنوان مطلب', '1', 'توضیحات مطلب', '1') ,
('2', 'عنوان مطلب', '1', 'توضیحات مطلب', '1') ,
('3', 'عنوان مطلب', '1', 'توضیحات مطلب', '1') ,
('1000', 'عنوان مطلب', '1', 'توضیحات مطلب', '1') ,
('1001', 'عنوان مطلب', '1', 'توضیحات مطلب', '1') ,
('1002', 'عنوان مطلب', '1', 'توضیحات مطلب', '1') ,
('1999', 'عنوان مطلب', '1', 'توضیحات مطلب', '1') ,
('2000', 'عنوان مطلب', '1', 'توضیحات مطلب', '1') ,
('2001', 'عنوان مطلب', '1', 'توضیحات مطلب', '1') ,
('2002', 'عنوان مطلب', '1', 'توضیحات مطلب', '1') ,
('2003', 'عنوان مطلب', '1', 'توضیحات مطلب', '1') ,
('2999', 'عنوان مطلب', '1', 'توضیحات مطلب', '1') ,
('2998', 'عنوان مطلب', '1', 'توضیحات مطلب', '1') ,
('3000', 'عنوان مطلب', '1', 'توضیحات مطلب', '1') ,
('999', 'عنوان مطلب', '1', 'توضیحات مطلب', '1') ;

دقت کنید که پارامتر constraint_exclusion در فایل کانفیگ دیتابیس postgresql.conf برابر با ON باشد یا با دستور زیر اعمالش کنید

کد:

SET constraint_exclusion = on;


اکنون نتیجه کاملا گویاست !
[تصویر: postgresql_part.png]

ین آموزش روی رکوردهای پایین انجام شده ، دقت کنید که بستگی به دیتاهای شما دارد ، ترجیحا از پارتهای زیادی استفاده نکنید چون هر چند پارتیشن بندی سرعت خواندن را افزایش میدهد سرعت insert,update را کند میکند (البته نه به همان نسبت )

پس در استفاده از این قابلیت زیاده روی نکنید Smile
با تشکر ، رضا شیخله

لینک منبع : http://www.rezaonline.net/blog/howto-cre...erits.html

php مرکز کد های سایت...
ما را در سایت php مرکز کد های سایت دنبال می کنید

برچسب : نویسنده : استخدام کار phpco بازدید : 165 تاريخ : چهارشنبه 26 اسفند 1394 ساعت: 10:31

سلام ..

من ازتون یه راهنمایی میخواستم

من زبان های html5,css3,js رو بلدم

الان میخوام php یاد بگیرم و بعد cms اختصاصی بنویسم

بنظرتون از چه راهی بهتر و سریع تر میتونم یاد بگیرم به غیر از کلاس
؟

الان تا حدودی echo و if و else و اینارو بلدم

م

php مرکز کد های سایت...
ما را در سایت php مرکز کد های سایت دنبال می کنید

برچسب : نویسنده : استخدام کار phpco بازدید : 156 تاريخ : چهارشنبه 26 اسفند 1394 ساعت: 10:31